在每個任務中新增時間/日期欄位
• 每個待辦事項可以設定完成時間或到期日期
• 保留分類標籤(工作、學習、個人、健康)
• 在 UI 中顯示時間/日期欄位,方便使用者查看
新增任務時可設定時間
• 新增任務表單提供時間/日期選擇器
• 如果未選擇,預設為空白或今日日期
• 保持新增任務插入列表最前方(未完成的任務)
任務排序與顯示
• 任務仍按照完成狀態排序:未完成在上方,已完成在下方
• 時間/日期欄位僅作為資訊顯示,不影響打勾移動邏輯
// todo_item.dart
class ToDoItem {
String title;
String label; // 分類標籤
DateTime? dueDate; // 新增時間/日期欄位
bool isDone;
ToDoItem({
required this.title,
required this.label,
this.dueDate,
this.isDone = false,
});
}
// main.dart - 新增任務
void _addToDoItem(String task, String label, DateTime? dueDate) {
setState(() {
_todoList.insert(
0,
ToDoItem(title: task, label: label, dueDate: dueDate),
);
});
}
// todo_item_widget.dart - 顯示時間/日期
Widget _buildToDoItem(ToDoItem item) {
return Card(
child: ListTile(
leading: Checkbox(
value: item.isDone,
onChanged: (value) {
setState(() {
item.isDone = value!;
});
},
),
title: Text(
item.title,
style: TextStyle(
decoration: item.isDone ? TextDecoration.lineThrough : null,
),
),
subtitle: item.dueDate != null
? Text('到期: ${DateFormat('yyyy/MM/dd HH:mm').format(item.dueDate!)}')
: null,
trailing: Text(item.label),
),
);
}
